﻿/**
 * 
 * @file FITKSEASubSysShellCurved.h
 * @brief 单双曲率板声明
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-10-15
 * 
 */
#ifndef _FITKCURVED_SEA_SUB_SYS_H___
#define _FITKCURVED_SEA_SUB_SYS_H___

#include "FITKSEASubSysAbsShell.h"

namespace Acoustics
{
    /**
     * @brief 单曲率板
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-10-15
     */
    class FITKAcousticsModelAPI FITKSEASubSysSinglyCurvedShell :
        public FITKAbstractSEASubSysShell
    {
        FITKCLASS(Acoustics, FITKSEASubSysSinglyCurvedShell);
    public:
        /**
         * @brief Construct a new FITKSEASubSysSinglyCurvedShell object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        explicit FITKSEASubSysSinglyCurvedShell() = default;
        /**
         * @brief Destroy the FITKSEASubSysSinglyCurvedShell object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        virtual ~FITKSEASubSysSinglyCurvedShell() = default;

        /**
         * @brief 获取子系统类型
         * @return SEASubSysType
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-06
         */
        virtual SEASubSysType getSEASubSysType() override;
        /**
         * @brief    数据对象只有点的数据时，更新三角网格
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-06
         */
        virtual bool updateTriMesh() override;
    protected:
    private:
    };



    /**
     * @brief 双曲率板
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-10-15
     */
    class FITKAcousticsModelAPI FITKSEASubSysDoublyCurvedShell :
        public FITKAbstractSEASubSysShell
    {
        FITKCLASS(Acoustics, FITKSEASubSysDoublyCurvedShell);
    public:
        /**
         * @brief Construct a new FITKSEASubSysDoublyCurvedShell object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        explicit FITKSEASubSysDoublyCurvedShell() = default;
        /**
         * @brief Destroy the FITKSEASubSysDoublyCurvedShell object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        virtual ~FITKSEASubSysDoublyCurvedShell() = default;

        /**
         * @brief 获取子系统类型
         * @return SEASubSysType
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-06
         */
        virtual SEASubSysType getSEASubSysType() override;
        /**
         * @brief 设置环个数
         * @param[i]  nRing          环个数
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        void setNumberOfRing(const int nRing);
        /**
         * @brief 获取环个数
         * @return int 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-15
         */
        int getNumberOfRing() const;
        /**
         * @brief    数据对象有点的数据时，更新三角网格
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-06
         */
        virtual bool updateTriMesh() override;

    private:
 
    };
}


#endif